       ______  ___    ___  ______    _____       __   ___   __    ______
      |_    _| \  \  /  / |   _  \  |   __|     |  | |   \ |  |  /  ____\
        |  |    \  \/  /  |  |_|  | |  |__      |  | |    \|  | |  |___   
        |  |     \    /   |   ___/  |   __| --- |  | |        |  \___  \
        |  |      |  |    |  |      |  |__      |  | |  |\    |  ____|  |
        |__|      |__|    |__|      |_____|     |__| |__| \___| \______/

 Chimes to drive you dotty, characters to define and rotate in 3D - if none of
                these patterns take your fancy, try the hangman


+-----------------------------------------------------------------------------+
|Printer typefaces                                                            |
|-----------------------------------------------------------------------------|
| If you're already shuddering at the thought of typing this horrifyingly     |
| long program, let me point out it's well worth it!                          |
|     Gordon Yacomine of Dundee has written an extremely useful program with  |
| extra commands to let you access different type styles (on your printer)    |
| without needing to remember long strings of control codes.                  |
|     The various commands available:                                         |
| |NLQON      near-letter-quality                                             |
| |MINION     mini typeface                                                   |
| |PROPON     proportional printing                                           |
| |CONON      condensed                                                       |
| |SUBON      subscript                                                       |
| |SUPON      superscript                                                     |
| |DBLON      double-strike                                                   |
| |ITALON     italics                                                         |
| |BOLDON     bold                                                            |
| |UNDON      underlining                                                     |
| |DBLWON     double-width                                                    |
|     Notice that each of the commands ends in 'ON': this tells the program   |
| to switch on the chosen effect. Every command can have 'ON' replaced by     |
| 'OFF'. So, for example, this prints the sentence 'What a nice day!' in      |
| bold, with the word 'nice' in italics:                                      |
|                                                                             |
| 10 |BOLDON                                                                  |
| 20 PRINT #8, "What a ";                                                     |
| 30 |BOLDOFF:|ITALON                                                         |
| 40 PRINT #8, "nice ";                                                       |
| 50 |ITALOFF:|BOLDON                                                         |
| 60 PRINT #8, "day!"                                                         |
| 70 |BOLDOFF                                                                 |
|                                                                             |
|     Here is the main listing:                                               |
|                                                                             |
| [Listing - TYPEFACE.BAS]                                                    |
|                                                                             |
+-----------------------------------------------------------------------------+


+-----------------------------------------------------------------------------+
|Dotty                                                                        |
|-----------------------------------------------------------------------------|
| Tommy Daffin of South Brewham, Somerset, has provided you with an           |
| interesting type-in that creates 'dotty' designs. Using Q, A, O and P will  |
| move an ever-growing line around the screen. When your creativity has been  |
| exhausted press the spacebar and watch those dots move.                     |
|                                                                             |
| [Listing - DOTTY.BAS]                                                       |
+-----------------------------------------------------------------------------+


+-----------------------------------------------------------------------------+
|Hangman                                                                      |
|-----------------------------------------------------------------------------|
| A faithful reproduction of an old favourite has been sent in by Darren      |
| Clarke of Sheldon, Birmingham. The listing may be long, but the game is     |
| still as enjoyable as ever, if not more so. If you want to alter the words  |
| the game uses, lines 890 to 950 are the place to do it. The words must not  |
| be longer than 18 characters, and there can only be 20 words at a time.     |
|                                                                             |
| [Listing - HANGMAN.BAS]                                                     |
+-----------------------------------------------------------------------------+


+-----------------------------------------------------------------------------+
|Chimes                                                                       |
+-----------------------------------------------------------------------------+
Last month you had budgie noises from your Amstrad. This month you are treated
to the chimes of a grandfather clock, courtesy of Dave Thomas of Bridgend in
Mid-Glamorgan.

[Listing - CHIMES.BAS]


+-----------------------------------------------------------------------------+
|Rectangle                                                                    |
+-----------------------------------------------------------------------------+
Have you ever wished to display rectangles of any shape or size on the screen -
rapidly? If so then A Knife of Romford, Essex, has sent in the required goods.
    When you run the program, there will be a new command available:
|RECT,a,b,c,d,e, where a and b are the origin or rather the coordinates of the
bottom left of the rectangle, c is the width of the rectangle, d is its length,
and e selects the colour.

[Listing - RECT.BAS]


+-----------------------------------------------------------------------------+
|Patterns Mk II                                                               |
+-----------------------------------------------------------------------------+
David Brown of Sutton, West Midlands, has supplied you with an impressive
pattern-producing program. There have been many such routines in the past -
this one is rather exceptional. The patterns or designs are varied, complex and
pleasant to view. Pressing the spacebar at any time will start a new pattern
into life. This program will work only on the 664 or 6128.

[Listing - PATTERN2.BAS]


+-----------------------------------------------------------------------------+
|Character definer                                                            |
+-----------------------------------------------------------------------------+
 Before you turn the page in disgust at this mammoth listing, let me just say
 this finger-wearing program is is well worth typing in.The character definer
 sent in by James Cadwallader of Gosport, Hants, is one of the classiest you
 will see. Its ease of use and functions will shame many that have gone before.
     Characters from 32 (the space) upwards can be defined. When run the
 program displays a box with several characters. One of them is highlighted,
 and in the neighbouring box is its Ascii code. With the cursor keys you can
 scroll backwards or forwards through the character set.
     Once you reach the character you want to redefine, press Enter or Return.
 A list of options will appear: C to continue, R to re-select, S to save and L
 to load. Pressing C draws the highlighted character in a large grid box on the
 top left of the screen.
     Using a combination of spacebar, Delete and cursor keys, you can now
 design a new character. As you fill or delete squares, the character will be
 displayed in mode-0 and mode-2 characters below the grid. Pressing Clear will
 wipe the grid to let you restart your design.
     After finishing your character, press Tab to choose another character to
 design. Or you can load or save a complete character set.

 [Listing - CHARDEF.BAS]

[There is a minor bug in Character Definer: after selecting a character, when
pressing C to continue, it must be entered in lower case. The program accepts
both upper case and lower case for the other options. Amstrad Action did not
print a correction in any subsequent issues.]

 _____________________________________________________________________________
|                                                                             |
| 3D shape rotator                                                            |
| As the title suggests, this listing from Simon Watson in Cornwall will      |
| rotate three-dimensional shapes. You must enter the number of sides the     |
| shape is to have. The program will draw it and then proceed to rotate it.   |
|      Once rotation has started, these keys will affect the shape: Fast,     |
| Medium, Slow rotation speed; Direction change; Ink colour; Reveal all 15    |
| frames of animation.                                                        |
|                                                                             |
| [Listing - 3DSHAPE.BAS]                                                     |
|                                                                             |


-------------------------------------------------------------------------------
PROBLEM ATTIC                                                     PROBLEM ATTIC
-------------------------------------------------------------------------------
   Our expert solves your problems with Arnold - nothing is too simple or too
                              complicated for RpM

Loading without running
Can you tell me if there is a way to load binary files into memory, without
running them, if they are located at addresses below 4500? Laser Genius can do
it, but runs short on memory space for particularly long files.
Rod Dunlop
Pollokshields, Glasgow

As Basic requires memory for itself it gets rather fussy when you try to load a
file below 4500 decimal: usually spitting out the message "Memory full". The
routine below overcomes these problems, allowing you to load any file at any
memory location. It is a mixture of Basic and machine-code. The Basic asks you
to input the filename and location address. The machine-code does the actual
loading and is located at &BF00.
 __________________________
|                          |
| [Listing - LOADBIN.BAS]  |
|__________________________|


Azerty please
I have written a short Basic program that alters the CPC's qwerty keyboard into
an azerty keyboard - here in Belgium it's what we are used to. Unfortunately
when I boot CPM both the program and the redefined keyboard vanish. Is it
possible to change the qwerty to azerty under CPM?
     The keys to change, in normal, shift and control order:
QWERTY                AZERTY
  aA                    qQ
  qQ                    aA
  zZ                    wW
  wW                    zZ
  mM                    :*
  :*                    mM
Alfons Kerremans
Willebroek, Belgium

When you boot CPM it completely clears memory, colours, key definitions and so
on. However, not all is lost as it is possible to have your keyboard set to
your requirements under CPM:
      Ensure that you have the files SUBMIT.COM and SETKEYS.COM included on
your CPM workdisk. These can be copied by booting your system disk and typing
PIP B:=A:submit.com at the A> prompt (do the same for setkeys.com). You will
then need to create two Ascii files - one contains data concerning the new key
definitions and the other is PROFILE.SUB; this will automatically execute when
you boot up CPM.
     The BASIC program below creates the two files in question. Make sure that
your workdisk is in the drive, for when the program runs it writes the files.
 ______________________________
/ / |                          |
|/o | [Listing - AZERTCPM.BAS] |
|_o_|__________________________|

     Each data statement contains information necessary to redefine the keys
for an azerty keyboard. The first number refers to the key number (6128 owners
will find this list printed on the casing of their drives - alternatively it's
in the user manual). Next comes the key state: N=normal, S=shift, C=control.
The items in single quotes tell SETKEYS the character that should be printed -
the quotes and caret are used by the system. For example '65' is the Ascii
number for A.

 ___________________________
| ___  ___   ____   _______ |
|  |    |   /    \  |  |  | |
|  |____|  |      |    |    |
|  |    |  |      |    |    |
| _|_  _|_  \____/    _|_   |
|___________________________|
 ___________________________
| _______ ___ ______   ___  |
| |  |  |  |   |    \ /   \ |
|    |     |   |____/ \___  |
|    |     |   |          \ |
|   _|_   _|_ _|_     \___/ |
|___________________________|

 +----------------------------------------------------------------------------+
 |Re-direct                                                                   |
 +----------------------------------------------------------------------------+
There have been countless programs to redirect the screen output to the
printer. I thought it would make a nice change to redirect anything for the
printer to the screen. Well, it's different!

[Listing - REDIRECT.BAS]
Stephen Gennard
Barnsley, Yorkshire

[This program does not seem to work correctly on CPC464 machines. Amstrad
Action did not mention this.]

 +----------------------------------------------------------------------------+
 |Weird                                                                       |
 +----------------------------------------------------------------------------+
This short routine will stun and amaze you. It will puzzle you up to the
eyeballs. Some of the effects are border flash, randomly defined windows,
vertical printing, stippling effects.

[Listing - WEIRD.BAS]
Adrian Sill
Doncaster, South Yorkshire

+-----------------------------------------------------------------------------+
| Please do not feed the lines                                                |
+-----------------------------------------------------------------------------+

This listing prevents two linefeeds being sent to the printer. I find this
rather handy, for as my printer is prone to throwing in an extra linefeed after
every line. Be careful when entering the program as two data items will need to
be altered, depending which Amstrad model you own.

[Listing - LINEFEED.BAS]
M Burke
Bellgreen, Coventry


+-----------------------------------------------------------------------------+
| Electronic fiddling                                                         |
+-----------------------------------------------------------------------------+

You may be interested in this tip if you have more roms than rom sockets and an
eprom blower.
Modify your eprom card so that pin 27 of the eprom socket (break any connection
that this pin may have) is connected to the centre pole of a changeover switch,
so that it can be changed to either ground or 5V. Copy your eproms into a
27256, one eprom into the lower 16k and one into the upper 16k. Either of your
roms are now accessible by using the switch - not at the same time, of course.
Another thing you might like to have is a simple way of using any standard
5-inch drive on the Amstrad (well, practically any - I haven't yet found a
drive for which this won't work). The cable from the Amstrad to the drive will
need the disk-ready line grounded - this can easily be done by shorting the
last two lines together. The simple program below should be run before using
the drive under Amsdos. It slows the disk access rates down so that the drive
can be used without the ready line. The drive can also be used under CPM 2.2 by
altering the stepping rates in the Setup program.

[Listing - SETDISKR.BAS]                                                     AA
